package v1ch06.anonymousInnerClass;

import javax.swing.Timer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

/**
 * 这个程序演示了匿名内部类。
 *
 * @author Cay Horstmann
 * @version 1.11 2015-05-12
 */
public class AnonymousInnerClassTest {
	public static void main(String[] args) {
		TalkingClock clock = new TalkingClock();
		clock.start(1000, true);
		
		// 保持程序运行，直到用户选择“确定”
		JOptionPane.showMessageDialog(null, "Quit program?");
		System.exit(0);
	}
}

/**
 * 定期打印时间的时钟。
 */
class TalkingClock {
	/**
	 *启动时钟。
	 *
	 * @param interval 消息之间的间隔（以毫秒为单位）
	 * @param beep     如果时钟应该响起，则为真
	 */
	public void start(int interval, boolean beep) {
		ActionListener listener = new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				System.out.println("At the tone, the time is " + new Date());
				if (beep) Toolkit.getDefaultToolkit().beep();
			}
		};
		Timer t = new Timer(interval, listener);
		t.start();
	}
}
